﻿using MyCompanyName.AbpZeroTemplate.Prm.Project;
using MyCompanyName.AbpZeroTemplate.Prm.Admin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MyCompanyName.AbpZeroTemplate.Authorization.Users;
using Microsoft.AspNet.Identity;
using MyCompanyName.AbpZeroTemplate.Authorization.Roles;
using Abp.Authorization.Users;

namespace MyCompanyName.AbpZeroTemplate.EntityFramework.Initializtion
{
    public class CreateDatabaseInitializer
        : System.Data.Entity.CreateDatabaseIfNotExists<AbpZeroTemplateDbContext>
    //: System.Data.Entity.DropCreateDatabaseIfModelChanges<AbpZeroTemplateDbContext>
    {
        protected override void Seed(AbpZeroTemplateDbContext context)
        {
            new Seed.InitialDbBuilder(context).Create();

            InitProjectRole("项目经理", true, 1, context);
            InitProjectRole("访客", true, 2, context);
            InitProjectRole("负责人", true, 3, context);
            InitProjectRole("研发组员", false, 4, context);
            InitProjectRole("分析组员", false, 5, context);

            //InitProjectRole("客户负责人", 3, context);
            //InitProjectRole("研发副总", 4, context);
            //InitProjectRole("分析经理", 5, context);
            //InitProjectRole("分析负责人", 6, context);
            //InitProjectRole("分析组员", 7, context);
            //InitProjectRole("研发经理", 8, context);
            //InitProjectRole("研发成员", 9, context);
            //InitProjectRole("质量经理", 11, context);
            //InitProjectRole("生产经理", 12, context);
            //InitProjectRole("项管经理", 13, context);
            //InitProjectRole("项管组员", 14, context);
            //InitProjectRole("文件审核员", 15, context);
            //InitProjectRole("技术负责人", 16, context);
            InitProject(context);

            //InitDocumentType("", "", "周报", 1, context);
            //InitDocumentType("", "", "评审报告", 2, context);
            //InitDocumentType("", "", "专利分析报告", 3, context);
            //InitDocumentType("", "", "会议纪要", 4, context);
            //InitDocumentType("", "", "阶段小结报告", 5, context);
            //InitDocumentType("", "", "第三方参考资料", 6, context);
            //InitDocumentType("", "", "供应商技术包", 7, context);
            //InitDocumentType("", "", "客户资料", 8, context);
            //InitDocumentType("", "", "市场分析资料", 9, context);
            //InitDocumentType("", "", "COA", 10, context);
            //InitDocumentType("", "", "安全报告", 11, context);
            //InitDocumentType("", "", "分析方法", 12, context);
            //InitDocumentType("", "", "质量标准", 13, context);

            InitDocumentType("", "报告", "周报", 1, context, true);
            InitDocumentType("", "报告", "生产报告", 2, context);
            InitDocumentType("", "报告", "实验报告", 3, context);
            InitDocumentType("", "厂区", "分析", 4, context);
            InitDocumentType("", "厂区", "生产", 5, context);
            InitDocumentType("", "厂区", "分析技术部", 6, context);
            InitDocumentType("", "厂区", "研发", 7, context);
            InitDocumentType("", "厂区", "质量", 8, context);
            InitDocumentType("", "分析", "COA", 9, context);
            InitDocumentType("", "分析", "对照品", 10, context);
            InitDocumentType("", "分析", "方法及标准", 11, context);
            InitDocumentType("", "分析", "其它", 12, context);
            InitDocumentType("", "分析", "谱图", 13, context);
            InitDocumentType("", "", "合成", 14, context);
            InitDocumentType("", "", "商务", 15, context);
            InitDocumentType("", "", "质量", 16, context);
            InitDocumentType("", "", "中试", 17, context);
            InitDocumentType("", "", "其它", 18, context);



            InitBusiness(context);
            InitPhase(context);

            var pwd = new PasswordHasher().HashPassword("000000");
            InitUser("卢朝帅", pwd, "lcs", "lcs@holoinfo.com", context);
            InitUser("缪小峰", pwd, "mxf", "mxf@holoinfo.com", context);
            InitUser("彭学", pwd, "px", "px@holoinfo.com", context);
            InitUser("高辉", pwd, "gh", "gh@holoinfo.com", context);

            InitOrganization(context);
            InitOrganizationUser(context);

            InitMailDefined(context);

            InitPlanTpl("项目基本信息调研", 0, context);
            var 可行性分析 = InitPlanTpl("可行性分析", 0, context);
            InitPlanTpl("市场前景分析", 可行性分析.Id, context);
            InitPlanTpl("政策可行性分析", 可行性分析.Id, context);
            InitPlanTpl("临床试验研究分析", 可行性分析.Id, context);
            InitPlanTpl("知识产权保护分析", 可行性分析.Id, context);
            InitPlanTpl("合成路线工艺分析", 可行性分析.Id, context);
            InitPlanTpl("生产可行性分析", 可行性分析.Id, context);
            InitPlanTpl("项目SWOT分析", 可行性分析.Id, context);
            var 立项 = InitPlanTpl("立项", 0, context);
            InitPlanTpl("立项报告初稿", 立项.Id, context);
            InitPlanTpl("立项讨论会", 立项.Id, context);
            InitPlanTpl("立项报告修改稿", 立项.Id, context);
            InitPlanTpl("立项评审", 立项.Id, context);

            InitPlanTpl("项目资料汇总", 0, context);

            var 合成小试研究 = InitPlanTpl("合成小试研究", 0, context);
            InitPlanTpl("合成路线的选择", 合成小试研究.Id, context);
            InitPlanTpl("原料试剂的准备", 合成小试研究.Id, context);
            InitPlanTpl("合成工艺实验", 合成小试研究.Id, context);
            InitPlanTpl("产物样品的产出", 合成小试研究.Id, context);
            InitPlanTpl("合成路线优化实验", 合成小试研究.Id, context);
            InitPlanTpl("工艺条件优化实验", 合成小试研究.Id, context);
            InitPlanTpl("工艺路线的初步确定", 合成小试研究.Id, context);
            InitPlanTpl("工艺评审报告", 合成小试研究.Id, context);
            InitPlanTpl("三批连续样品的产出", 合成小试研究.Id, context);
            InitPlanTpl("小试总结报告", 合成小试研究.Id, context);
            InitPlanTpl("小试文件移交", 合成小试研究.Id, context);

            var 合成中试研究 = InitPlanTpl("合成中试研究", 0, context);
            InitPlanTpl("原料试剂的准备", 合成中试研究.Id, context);
            InitPlanTpl("合成路线的重现实验", 合成中试研究.Id, context);
            InitPlanTpl("合成放大实验", 合成中试研究.Id, context);
            InitPlanTpl("合成放大优化实验", 合成中试研究.Id, context);
            InitPlanTpl("中间体研究实验", 合成中试研究.Id, context);
            InitPlanTpl("杂质研究实验", 合成中试研究.Id, context);
            InitPlanTpl("工艺稳定性研究", 合成中试研究.Id, context);
            InitPlanTpl("关键工艺研究", 合成中试研究.Id, context);
            InitPlanTpl("三废处理研究", 合成中试研究.Id, context);
            InitPlanTpl("回收套用研究", 合成中试研究.Id, context);
            InitPlanTpl("工艺评审报告", 合成中试研究.Id, context);
            InitPlanTpl("三批连续样品的产出", 合成中试研究.Id, context);
            InitPlanTpl("生成成本核算", 合成中试研究.Id, context);
            InitPlanTpl("生产设备分析", 合成中试研究.Id, context);
            InitPlanTpl("中试总结报告", 合成中试研究.Id, context);
            InitPlanTpl("中试文件移交", 合成中试研究.Id, context);


            var 合成分析方法研究 = InitPlanTpl("合成分析方法研究", 0, context);
            InitPlanTpl("分析方法筛选", 合成分析方法研究.Id, context);
            InitPlanTpl("对照品标样原料准备", 合成分析方法研究.Id, context);
            InitPlanTpl("产物结构确认", 合成分析方法研究.Id, context);
            InitPlanTpl("中间体结构确认", 合成分析方法研究.Id, context);
            InitPlanTpl("分析方法实验", 合成分析方法研究.Id, context);
            InitPlanTpl("产物检测方法研究", 合成分析方法研究.Id, context);
            InitPlanTpl("中间体检测方法研究", 合成分析方法研究.Id, context);
            InitPlanTpl("杂质检测方法研究", 合成分析方法研究.Id, context);


            var 合成质量标准研究 = InitPlanTpl("合成质量标准研究", 0, context);
            InitPlanTpl("中间体质量研究", 合成质量标准研究.Id, context);
            InitPlanTpl("终产物质量研究", 合成质量标准研究.Id, context);
            InitPlanTpl("杂质研究", 合成质量标准研究.Id, context);
            InitPlanTpl("理化性质研究", 合成质量标准研究.Id, context);
            InitPlanTpl("鉴定方法研究", 合成质量标准研究.Id, context);
            InitPlanTpl("检测项目研究", 合成质量标准研究.Id, context);
            InitPlanTpl("含量校对研究", 合成质量标准研究.Id, context);
            InitPlanTpl("原料药质量标准", 合成质量标准研究.Id, context);

            InitPlanTpl("合成稳定性研究", 0, context);

            var 制剂分析方法研究 = InitPlanTpl("制剂分析方法研究", 0, context);
            InitPlanTpl("剂型选择", 制剂分析方法研究.Id, context);
            InitPlanTpl("处方研究", 制剂分析方法研究.Id, context);
            InitPlanTpl("小试工艺研究", 制剂分析方法研究.Id, context);
            InitPlanTpl("放大工艺研究", 制剂分析方法研究.Id, context);
            InitPlanTpl("工艺验证评价", 制剂分析方法研究.Id, context);
            InitPlanTpl("包装材料选择", 制剂分析方法研究.Id, context);
            InitPlanTpl("原辅物料控制", 制剂分析方法研究.Id, context);
            InitPlanTpl("生产设备分析", 制剂分析方法研究.Id, context);
            InitPlanTpl("生产成本核算", 制剂分析方法研究.Id, context);
            InitPlanTpl("生产可行性评价", 制剂分析方法研究.Id, context);

            //InitPlanTpl("注册资料汇总", 制剂分析方法研究.Id, context);
            //InitPlanTpl("资料初步审查", 制剂分析方法研究.Id, context);
            //InitPlanTpl("资料寄送CDE省局", 制剂分析方法研究.Id, context);
            //InitPlanTpl("现场核查", 制剂分析方法研究.Id, context);
            //InitPlanTpl("试验样品准备", 制剂分析方法研究.Id, context);
            //InitPlanTpl("样品送省药检所", 制剂分析方法研究.Id, context);
            //InitPlanTpl("资料寄CDE国家局", 制剂分析方法研究.Id, context);
            //InitPlanTpl("收到检测报告", 制剂分析方法研究.Id, context);
            //InitPlanTpl("补充申报资料", 制剂分析方法研究.Id, context);
            //InitPlanTpl("审评结束批准", 制剂分析方法研究.Id, context);
            //InitPlanTpl("省局取回批件", 制剂分析方法研究.Id, context);

            //InitPlanTpl("国外临床资料分析", 制剂分析方法研究.Id, context);
            //InitPlanTpl("临床试验方案设计", 制剂分析方法研究.Id, context);
            //InitPlanTpl("临床基地合作谈判", 制剂分析方法研究.Id, context);
            //InitPlanTpl("临床病例招募进展", 制剂分析方法研究.Id, context);
            //InitPlanTpl("临床试验过程监察", 制剂分析方法研究.Id, context);
            //InitPlanTpl("临床试验结果整理", 制剂分析方法研究.Id, context);
            //InitPlanTpl("临床试验进度跟踪", 制剂分析方法研究.Id, context);

            //InitPlanTpl("临床工作计划", 制剂分析方法研究.Id, context);
            //InitPlanTpl("临床立项申请", 制剂分析方法研究.Id, context);
            //InitPlanTpl("购买对照药品", 制剂分析方法研究.Id, context);
            //InitPlanTpl("制备试验药品", 制剂分析方法研究.Id, context);
            //InitPlanTpl("准备标准药品", 制剂分析方法研究.Id, context);
            //InitPlanTpl("准备研究资料", 制剂分析方法研究.Id, context);
            //InitPlanTpl("联系临床医院", 制剂分析方法研究.Id, context);
            //InitPlanTpl("签订合作合同", 制剂分析方法研究.Id, context);
            //InitPlanTpl("支付试验费用", 制剂分析方法研究.Id, context);
            //InitPlanTpl("申报伦理资料", 制剂分析方法研究.Id, context);
            //InitPlanTpl("临床备案登记", 制剂分析方法研究.Id, context);
            //InitPlanTpl("寄送药品和资料", 制剂分析方法研究.Id, context);
            //InitPlanTpl("召开临床启动会", 制剂分析方法研究.Id, context);
            //InitPlanTpl("招募临床试验者", 制剂分析方法研究.Id, context);
            //InitPlanTpl("临床方案监督", 制剂分析方法研究.Id, context);
            //InitPlanTpl("临床数据分析", 制剂分析方法研究.Id, context);
            //InitPlanTpl("临床总结报告", 制剂分析方法研究.Id, context);
            //InitPlanTpl("回收试验用药", 制剂分析方法研究.Id, context);
            //InitPlanTpl("机构资料存档", 制剂分析方法研究.Id, context);
            //InitPlanTpl("报告审核盖章", 制剂分析方法研究.Id, context);
            //InitPlanTpl("资料交注册组", 制剂分析方法研究.Id, context);
            //InitPlanTpl("工作总结报告", 制剂分析方法研究.Id, context);
        }

        public PlanTpl InitPlanTpl(string name, int parentId, AbpZeroTemplateDbContext context)
        {
            var tpl = context.PlanTpl.Add(new PlanTpl() { Name = name, ParentId = parentId, Day = 7 });
            context.SaveChanges();
            return tpl;
        }


        public void InitMailDefined(AbpZeroTemplateDbContext context)
        {
            foreach (var item in Enum.GetValues(typeof(MailCatelog)))
            {
                string text = item.ToString();
                var mail = new MailDefined()
                {
                    KeyCatelog = (MailCatelog)item,
                    Subject = text,
                    Body = text,
                    Priority = System.Net.Mail.MailPriority.Normal,
                    Notes = text,
                    ProjectRoles = "",
                    SystemRoles = "",
                    Receivers = "",
                    OptScope = Prm.Authorization.ActionScope.all
                };





                switch (mail.KeyCatelog)
                {
                    case MailCatelog.文档上传:
                        mail.Subject = "【[项目名称] - [项目编号]】上传了新文档";
                        mail.Body = " [操作人] 在 [操作时间] 上传了该项目  [文档类别] 中的文档： [文档名称]";
                        break;
                    case MailCatelog.项目问题提问:
                        mail.Subject = "【[项目名称] - [项目编号]】遇到新的问题【 [标题]】";
                        mail.Body = " [操作人] 在 [操作时间] 提问了该项目 \r\n 标题:[标题] \r\n 内容:\r\n[内容]";
                        break;
                    case MailCatelog.项目问题解答:
                        mail.Subject = "【[项目名称] - [项目编号]】的问题【[标题]】有最新消息";
                        mail.Body = " [操作人] 在 [操作时间] 回答了问题  【[标题]】\r\n 内容:\r\n[内容]\r\n 回答:\r\n[回答]";
                        break;
                    case MailCatelog.项目状态变更:
                        mail.Subject = "【[项目名称] - [项目编号]】修改状态为 【[当前状态]】";
                        mail.Body = " [操作人] 在 [操作时间] 修改了项目状态信息。\r\n状态： 【[之前状态]】->  【[当前状态]】 \r\n进度： 【[之前进度]】->  【[当前进度]】\r\n预期完成日期： 【[之前预期完成]】->  【[当前预期完成]】\r\n备注： [描述]";
                        break;
                    case MailCatelog.申请查看项目:
                        mail.Subject = "[操作人]申请查看项目【[项目名称] - [项目编号]】";
                        mail.Body = "申请项目：【[项目名称] - [项目编号]】\r\n 申请时间：[生效时间] - [失效时间]\r\n 申请说明：[申请说明]";
                        break;
                    case MailCatelog.申请查看项目通过:
                        mail.Subject = "通过 [申请人]查看项目 【[项目名称] - [项目编号]】[生效时间] - [失效时间]";
                        mail.Body = " [操作人] 在 [操作时间] 允许 [申请人]查看项目 【[项目名称] - [项目编号]】[生效时间] - [失效时间]\r\n 审核说明：[审核说明]";
                        break;
                    case MailCatelog.申请查看项目驳回:
                        mail.Subject = "驳回 [申请人]查看项目 【[项目名称] - [项目编号]】";
                        mail.Body = " [操作人] 在 [操作时间] 驳回了 [申请人]查看项目 【[项目名称] - [项目编号]】 \r\n 审核说明：[审核说明]";
                        break;
                    case MailCatelog.新增项目通知:
                        mail.Subject = "新增项目 【[项目名称] - [项目编号]】";
                        mail.Body = " [操作人] 在 [操作时间] 新增项目 【[项目名称] - [项目编号]】 项目经理是 [项目经理]";
                        break;
                    default:
                        break;
                }



                context.MailDefined.Add(mail);
            }
        }



        public void InitUser(string name, string password, string account, string mail, AbpZeroTemplateDbContext context)
        {
            var debug = new User()
            {
                TenantId = 1,
                LaboratoryId = 0,
                RdCenterId = 0,
                BusinessId = 0,
                ShouldChangePasswordOnNextLogin = false,
                Name = name,
                Surname = name,
                Password = password,
                EmailAddress = mail,
                IsEmailConfirmed = false,
                EmailConfirmationCode = null,
                IsActive = true,
                UserName = account,
                LastModificationTime = DateTime.Now,
                LastModifierUserId = 1,
                CreationTime = DateTime.Now,
                CreatorUserId = 1
            };
            context.Users.Add(debug);
        }

        public void InitOrganization(AbpZeroTemplateDbContext context)
        {
            var org = new Abp.Organizations.OrganizationUnit()
            {
                DisplayName = "CIT",
                Code = "00001",
                ParentId = null,
                TenantId = 1,
                Children = new List<Abp.Organizations.OrganizationUnit>() 
                {
                    new Abp.Organizations.OrganizationUnit(){ DisplayName="研发部",TenantId=1,Code="00001.00001"},
                    new Abp.Organizations.OrganizationUnit(){ DisplayName="销售部",TenantId=1,Code="00001.00002"}
                }
            };
            context.OrganizationUnits.Add(org);
        }

        public void InitOrganizationUser(AbpZeroTemplateDbContext context)
        {
            context.UserOrganizationUnits.Add(new UserOrganizationUnit()
            {
                OrganizationUnitId = 1,
                TenantId = 1,
                UserId = 1
            });
            context.UserOrganizationUnits.Add(new UserOrganizationUnit()
            {
                OrganizationUnitId = 2,
                TenantId = 1,
                UserId = 3
            });
            context.UserOrganizationUnits.Add(new UserOrganizationUnit()
            {
                OrganizationUnitId = 2,
                TenantId = 1,
                UserId = 4
            });
            context.UserOrganizationUnits.Add(new UserOrganizationUnit()
            {
                OrganizationUnitId = 2,
                TenantId = 1,
                UserId = 5
            });
            context.UserOrganizationUnits.Add(new UserOrganizationUnit()
            {
                OrganizationUnitId = 3,
                TenantId = 1,
                UserId = 6
            });
        }

        public void InitPhase(AbpZeroTemplateDbContext context)
        {
            context.PhaseInfo.Add(new PhaseInfo()
            {
                Indexno = 1,
                ItemCount = 0,
                IsEnabled = true,
                Name = "产品调研"
            });
            context.PhaseInfo.Add(new PhaseInfo()
            {
                Indexno = 2,
                ItemCount = 0,
                IsEnabled = true,
                Name = "立项"
            });
            context.PhaseInfo.Add(new PhaseInfo()
            {
                Indexno = 3,
                ItemCount = 2,
                IsEnabled = true,
                Name = "合成小试",
                PhaseItems = new List<PhaseItem>()
                {
                    new PhaseItem(){Indexno=1,Name="打通路线",IsEnabled=true},
                    new PhaseItem(){Indexno=2,Name="样品确认",IsEnabled=true}
                }
            });
            context.PhaseInfo.Add(new PhaseInfo()
            {
                Indexno = 4,
                ItemCount = 2,
                IsEnabled = true,
                Name = "分析小试研究",
                PhaseItems = new List<PhaseItem>()
                {
                    new PhaseItem(){Indexno=1,Name="成品分析方法建立",IsEnabled=true},
                    new PhaseItem(){Indexno=2,Name="杂质分析方法建立",IsEnabled=true}
                }
            });
            context.PhaseInfo.Add(new PhaseInfo()
            {
                Indexno = 5,
                ItemCount = 2,
                IsEnabled = true,
                Name = "合成中试",
                PhaseItems = new List<PhaseItem>()
                {
                    new PhaseItem(){Indexno=1,Name="工艺优化",IsEnabled=true},
                    new PhaseItem(){Indexno=2,Name="三批样品",IsEnabled=true}
                }
            });
            context.PhaseInfo.Add(new PhaseInfo()
            {
                Indexno = 6,
                ItemCount = 2,
                IsEnabled = true,
                Name = "分析中试研究",
                PhaseItems = new List<PhaseItem>()
                {
                    new PhaseItem(){Indexno=1,Name="质量标准建立",IsEnabled=true},
                    new PhaseItem(){Indexno=2,Name="中间体分析方法建立",IsEnabled=true}
                }
            });
            context.PhaseInfo.Add(new PhaseInfo()
            {
                Indexno = 7,
                ItemCount = 3,
                IsEnabled = true,
                Name = "制剂小试研究",
                PhaseItems = new List<PhaseItem>()
                {
                    new PhaseItem(){Indexno=1,Name="剂型研究",IsEnabled=true},
                    new PhaseItem(){Indexno=2,Name="处方研究",IsEnabled=true},
                    new PhaseItem(){Indexno=3,Name="小试工艺",IsEnabled=true}
                }
            });
            context.PhaseInfo.Add(new PhaseInfo()
            {
                Indexno = 8,
                ItemCount = 2,
                IsEnabled = true,
                Name = "制剂中试研究",
                PhaseItems = new List<PhaseItem>()
                {
                    new PhaseItem(){Indexno=1,Name="放大工艺",IsEnabled=true},
                    new PhaseItem(){Indexno=2,Name="包材选择研究",IsEnabled=true}
                }
            });
            context.PhaseInfo.Add(new PhaseInfo()
            {
                Indexno = 9,
                ItemCount = 4,
                IsEnabled = true,
                Name = "注册部",
                PhaseItems = new List<PhaseItem>()
                {
                    new PhaseItem(){Indexno=1,Name="资料初步审查",IsEnabled=true},
                    new PhaseItem(){Indexno=2,Name="现场核查",IsEnabled=true},
                    new PhaseItem(){Indexno=3,Name="样品送检",IsEnabled=true},
                    new PhaseItem(){Indexno=4,Name="批文",IsEnabled=true}
                }
            });
        }
        public void InitProjectRole(string name, bool IsReserved, int orderNo, AbpZeroTemplateDbContext context)
        {
            context.ProjectRoleInfo.Add(new ProjectRoleInfo()
            {
                Description = string.Empty,
                InternalRole = InternalRole.项目经理,
                IsHumanWork = true,
                IsReserved = IsReserved,
                RoleName = name,
                Sortfactor = orderNo
            });
        }

        public void InitProject(AbpZeroTemplateDbContext context)
        {
            context.ProjectInfo.Add(new ProjectInfo()
            {
                Status = Status.准备,
                ProjectNo = "test1",
                ProjectName = "测试项目1",
                Address = "上海",
                Customer = "厚浪",
                RdCenterId = 1,
                LaboratoryId = 1,
                CustomeCode = "holo",
                PlanStartDate = DateTime.Now,
                PlanEndDate = DateTime.Now.AddMonths(2),
                TargetEndDate = DateTime.Now.AddMonths(1),
                ActualStartDate = new DateTime(1990, 1, 1),
                ActualEndDate = new DateTime(1990, 1, 1),
                PrmCommentStatus = CommentStatus.草稿,
                TeamCommentStatus = CommentStatus.草稿
            });
        }
        public void InitDocumentType(string rootName, string parentName, string name, int orderNo, AbpZeroTemplateDbContext context, bool IsSystem = false)
        {
            context.DocumentType.Add(new DocumentType()
            {
                Id = 0,
                RootName = rootName,
                ParentName = parentName,
                OrderNo = orderNo,
                Name = name,
                Description = name,
                IsEnabled = true,
                IsSystem = IsSystem,
                DefaultUploadNum = 1
            });
        }
        public void InitBusiness(AbpZeroTemplateDbContext context)
        {
            context.Business.Add(new Business()
            {
                Id = 0,
                Name = "研发部",
                Principal = "",
                RdCenter = new List<RdCenter>() 
                {
                    new RdCenter()
                    {
                        Id = 0,
                        Name = "浙江研发中心",
                        Principal = "",
                        Laboratory = new List<Laboratory>() { 
                            new Laboratory(){
                                Id = 0,
                                Name = "第一研究室",
                                Principal = "admin",
                                 PrincipalId=1
                            }
                        }
                    }
                }
            });
            context.Business.Add(new Business()
            {
                Id = 0,
                Name = "生产部",
                Principal = ""
            });
        }
    }
}
